﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using System.Web.Helpers;
using ENTIDADES;
using NEGOCIO;
using PRESENTACION.Models;
using System.Web.Script.Serialization;
namespace PRESENTACION.Controllers
{
    public class RegistrosController : Controller
    {
        //
        // GET: /Registros/

        public ActionResult ListaMesa()
        {
            ViewBag.listadoMesa = MesaCOM.listadoMesa();
            Session["pedido"] = null;
            return View();
        }

        public ActionResult formPedido(int idMesa)
        {
            ViewBag.mesa = MesaCOM.get(idMesa);
            ViewBag.lstCLiente = ClienteCOM.listadoCliente(1);
            ViewBag.listadoCategoria = CategoriaCOM.listadoCategoria();
            return View();
        }

        [AcceptVerbs(HttpVerbs.Post)]
        public int agregarPedido(int idProducto, int cantidad, string especificacion)
        {
            int existe = 0;

            List<DetallePedido> Lista = null;
            if (Session["pedido"] != null)
            {
                Lista = (List<DetallePedido>)Session["pedido"];
            }
            else
            {
                Lista = new List<DetallePedido>();
            }

            foreach (DetallePedido obj in Lista)
            {
                if (obj.objProducto.idproducto == idProducto)
                {
                    existe = 1;
                    break;
                }
            }

            if (existe == 0)
            {
                DetallePedido d = new DetallePedido();
                d.objProducto = ProductoCOM.get(idProducto);
                d.cantidad = cantidad;
                d.especificacion = especificacion;
                Lista.Add(d);
                Session["pedido"] = Lista;
            }

            return existe;
            //return RedirectToAction("formPedido", "Registros", new { idMesa = idMesa });
        }

        [AcceptVerbs(HttpVerbs.Post)]
        public int eliminarPedido(int index)
        {
            List<DetallePedido> Lista = null;
            if (Session["pedido"] != null)
            {
                Lista = (List<DetallePedido>)Session["pedido"];
            }
            else
            {
                Lista = new List<DetallePedido>();
            }

            Lista.RemoveAt(index);
            Session["pedido"] = Lista;

            return 1;
            //return RedirectToAction("formPedido", "Registros", new { idMesa = idMesa });
        }

        [AcceptVerbs(HttpVerbs.Post)]
        public int GrabarPedido(int idMesa, int idEmpleado, int idCliente)
        {
            Pedido objPedido = new Pedido();
            objPedido.objMesa = MesaCOM.get(idMesa);
            objPedido.objEmpleado = EmpleadoCOM.get(idEmpleado);
            objPedido.objCliente = ClienteCOM.get(idCliente);

            List<DetallePedido> Lista = null;
            Lista = (List<DetallePedido>)Session["pedido"];

            objPedido.lstDetallePedido = Lista;

            PedidoCOM.grabarPedido(objPedido);

            return 1;
        }

        public ActionResult getLstProducto(int idCategoria)
        {
            return Json(ProductoCOM.listadoProducto(idCategoria), JsonRequestBehavior.AllowGet);
        }

        public ActionResult Platos()
        {
            return View();
        }


                public ActionResult Clientes()
        {
            return View();
        }

        [HttpPost]
        public ActionResult Clientes(Cliente model)
        {

            ClienteCOM cli = new ClienteCOM();
            cli.guardarCliente(model);

            return View();
        }
        
        public ActionResult listados(int tipo, string sidx, string sord, int page, int rows)
        {
            eJQGrid jsonData = new eJQGrid();
            if (tipo == 1)
            {
                nProducto prov = new nProducto();
                jsonData = prov.listadoCompra(sidx, sord, page, rows);
            }
            
            return Json(jsonData);
        }

        [HttpPost]
        public ActionResult InUp_Platos(FormCollection formCollection)
        {
            nProducto platos = new nProducto();
            try
            {
                string operation = formCollection["oper"];
                if (operation.Equals("add") || operation.Equals("edit"))
                {
                    CategoriaModel cat_mod = new CategoriaModel
                    {
                        Categoria = new Categoria { idcategoria = Convert.ToInt32(formCollection["idcategoria"]) }
                    };

                    ProductoModel pro_mod = new ProductoModel
                    {
                        eProducto = new eProducto
                        {
                            idproducto = Convert.ToInt32(formCollection["idproducto"]),
                            descripcion = formCollection["descripcion"],
                            estado = Convert.ToBoolean(formCollection["estado"]),
                            precio = Convert.ToDouble(formCollection["precio"]),
                            objCategoria = cat_mod.Categoria
                        }
                    };
                    platos.GuardarOModificar(pro_mod.eProducto, operation);
                }
                return RedirectToAction("Platos");
            }
            catch
            {
                throw;
            }
        }

    }
}
